#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# @Date : 2024/3/27 14:14
# @Author : water
# @Description : 集合的基本操作

"""
Python3 集合
    集合（set）是一个无序的不重复元素序列。
    集合中的元素不会重复，并且可以进行交集、并集、差集等常见的集合操作。
    可以使用大括号 { } 创建集合，元素之间用逗号 , 分隔， 或者也可以使用 set() 函数创建集合。
    注意：创建一个空集合必须用 set() 而不是 { }，因为 { } 是用来创建一个空字典。
创建格式：
    parame = {value01,value02,...}
    或者
    set(value)
添加元素
    语法格式如下：
        s.add( x )
    将元素 x 添加到集合 s 中，如果元素已存在，则不进行任何操作。
    还有一个方法，也可以添加元素，且参数可以是列表，元组，字典等，语法格式如下：
        s.update( x )
    x 可以有多个，用逗号分开。如果是字典，则添加的是key

移除元素
    语法格式如下：
        s.remove( x )
    将元素 x 从集合 s 中移除，如果元素不存在，则会发生错误。
    此外还有一个方法也是移除集合中的元素，且如果元素不存在，不会发生错误
        s.discard( x )
    也可以设置随机删除集合中的一个元素，语法格式如下：
        s.pop()
    多次执行测试结果都不一样。
    set 集合的 pop 方法会对集合进行无序的排列，然后将这个无序排列集合的左面第一个元素进行删除。
计算集合元素个数：
    len(s)
    计算集合 s 元素个数。
清空集合
    s.clear()
    清空集合 s。
判断元素是否在集合中存在
    语法格式如下：
        x in s
    判断元素 x 是否在集合 s 中，存在返回 True，不存在返回 False。
"""

# 创建集合
set1 = {1, 2, 3, 4, 5}
print(set1)
# 创建空集合
set2 = set()
set3 = set(['a', 'b', 'c'])
print(set1 | set3, set1 & set3, set1 ^ set3, set1 - set3, sep="\n")

# 集合推导式：
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)

# 添加元素
set2.add(1)
print(set2)
set2.update([2, 3, 4], {5, 6}, ('a', 'b', 'c'), {'key1': 'value1', 'key2': 'value2'})
# 如果是字典，则添加的是key
print(set2)

# 移除元素
set2.remove('key2')
print(set2)

set2.discard('key2')
print(set2)
# 随机删除集合中的一个元素，多次执行测试结果都不一样。
print(set2.pop())

# 计算集合元素个数
print(len(set2))

# 清空集合
set1.clear()
print(set1)

# 判断元素是否在集合中存在

print(2 in set2)
